home *** CD-ROM | disk | FTP | other *** search
/ Aminet 19 / Aminet 19 (1997)(GTI - Schatztruhe)[!][Jun 1997].iso / Aminet / docs / mags / F0NT02.lha / texts / programozas.fht < prev    next >
Text File  |  1995-04-11  |  11KB  |  214 lines

  1. BG fontbg.iff
  2. COLUMN 1
  3. LIMIT 10 5 635 200
  4. FONT topaz.font 8
  5.  
  6. §TEXT
  7. §SHCOL 0
  8. §FONT 3 §CENTER §CR §SH+ §COL 15
  9. §I+ Operációs rendszer programozása §I- §PG
  10. §FONT 1
  11. §PG §SPACES 2 §FILL §SH-
  12.   Ezzel a rovattal szeretném mindenkinek megmutatni, milyen jó dolgokat
  13. lehet csinálni az Amiga operációs rendszerének a programozásával. Most
  14. lehet, sokan azt mondják, hogy léteznek ám olyan dolgok, amelyeket csak a
  15. hardver piszkálásával lehet megcsinálni. Ez igaz is, de ilyen dolgokra
  16. nagyon ritkán van szükség, ha egyáltalán. Manapság már a játékok egy része
  17. is az OS-t használja, és régen is voltak erre példák (Dune2, a Sierra Online
  18. összes kalandjátéka, Lucas Arts kalandjátékai, és újabban sok Doom klón is).
  19. Manapság a legtöbb demo-t is meg lehetne írni úgy, hogy egy sima OS
  20. képernyõn fusson, mivel szinte már nem is használják a különbözõ Copper
  21. trükköket, hanem inkább a textúrázáson van a hangsúly. Hát ennyit
  22. bevezetõnek.
  23. §SL 1 §SPACES 2
  24.   Most elõször megemlíteném a legfontosabb dokumentációkat, amelyekre egy
  25. amigás programozónak szüksége lehet. A ROM Kernel Reference Manual
  26. sorozatban megjelent Libraries és Devices szépen lépésrõl lépésre leírja,
  27. hogy milyen funkciókat, milyen paraméterekkel kell használni, hogy bizonyos
  28. dolgokat megcsináljunk. Létezik még a Hardware Reference Manual is, amely
  29. ugyanezt teszi, csak a hardverre vonatkozóan, de nem érdemes használni, mert
  30. a hardver egészen biztosan nagy mértékben meg fog változni a jövõben, ha
  31. lesz jövõje az Amigának. Persze, ha valaki mégis a hardver programozása
  32. mellett döntene, akkor mindenféleképpen tartsa magát az abban a könyvben
  33. leírtakhoz. Az Autodocs nevû leírások, az egyes library-k, device-ok,
  34. resource-ok és datatype-ok minden egyes funkciójának teljes leírását
  35. tartalmazzák, de nem olyan átfogó formában, mint a RKRM-ek. Itt tehát az
  36. egyes funkciók egymástól szinte teljesen függetlenül vannak felsorolva, így
  37. hát ebbõl nem lehet megtudni, hogy nagyobb dolgokat, miként kell
  38. megcsinálni. Nagy segítséget nyújtanak az Include-ok is, amelyek az OS
  39. összes struktúrájának és állandóinak a definicióját és ezekhez tanulságos
  40. kommentárokat is tartalmaznak. Ha tehát valakinek ezek a leírások meg
  41. vannak, akkor már semmi sem áll az útjában a profi programozáshoz.
  42. §SL 1 §SPACES 2
  43.   Tehát kezdjünk bele az akcióba. Most néhány olyan dolgot mondok el, amit
  44. egy assembler-t használó egyénnek tudnia kell. Bármilyen OS funkció
  45. hívásakor az A6 regiszterben kell lennie a library báziscímének. A D0, D1,
  46. A0, A1 regiszterek tartalmát az OS nem menti el a funkciók hívásakor, tehát
  47. ezek tartalma elvész, a többié viszont garantáltan nem. Vannak kivételek is,
  48. amelyek az Autodocs-ban külön meg vannak említve. A Graphics/WaitBlit
  49. például minden regiszter tartalmát elmenti, még a D0, D1, A0, A1
  50. regiszterekét is. A funkciók, ha adnak vissza valamilyen eredményt, akkor
  51. azt mindig a D0 regiszterben teszik. Szóval ezt a pár dolgot kell betartani.
  52. §SL 1 §SPACES 2
  53.   Az egyes struktúrák felépítését most nem fogom ecsetelni, mert akkor
  54. másról sem írnék, hanem majd mindig utalok rá, hogy melyik include fájlban
  55. található meg és ott majd meg lehet nézni a leírását. A funkciók leírását és
  56. paraméterezését az Autodocs-ban lehet megtalálni.
  57. §SL 1 §SPACES 2
  58.   Ahhoz, hogy használjuk a library-kat elõször meg kell nyitni õket az
  59. Exec/OpenLibrary nevû funkcióval. Ehhez viszont meg kellene elõször nyitni
  60. az exec.library-t, amit úgy teszünk, hogy kiolvassuk a 4-es címen található
  61. longword-öt, ami pontosan az exec.library báziscímét tartalmazza. Ez az
  62. egyetlen fix cím az Amiga memóriájában, ami biztos, hogy mindig ott lesz.
  63. Mostmár, hogy meg van az exec bázisa, az OpenLibrary segitségével bármely
  64. másik library bázisát megkaphatjuk és használhatjuk a funkcióit.
  65. §SL 1 §SPACES 2
  66.   Hát ennyi lenne az alap, amire szükség van. Ha valaki ezt tudja, akkor egy
  67. jó angol tudással (ami szükséges a dokumentáció megértéséhez) mindenre képes
  68. lesz az operációs rendszerrel. A kurzusunk ezután úgy fog kinézni, hogy e
  69. rovat hasábjain írok egy felhasználói programot, amelynek minden egyes
  70. részét részletesen megmagyarázom. Bármilyen kérdéssel lehet közvetlen hozzám
  71. fordulni a következõ címen:
  72. §SL 1 §SPACES 2
  73. E-Mail:  §FONT 0 zavacki@dragon.klte.hu §FONT 1
  74. §PG §SPACES 2
  75. Levél:
  76. §PG §SPACES 3 Zavacki Ferenc
  77. §PG §SPACES 3 Debrecen
  78. §PG §SPACES 3 Perem utca 7.
  79. §PG §SPACES 3 4225
  80. §SL 1 §SPACES 2
  81. Telefon: (52) 409 325
  82. §SL 1 §SPACES 2
  83.   Aki sima levelet ír és választ is szeretne, az küldjön egy magára címzett,
  84. felbélyegzett válaszborítékot is. Mellesleg az e-mail-t jobban szeretem.
  85. Akinek kell valamilyen dokumentáció is, az elegendõ lemezt is küldjön. Az
  86. Autodocs, Include-ok és fejlesztõi programok három lemezt igényelnek, míg a
  87. RKRM, HRM és példa források megint hármat. Tehát akinek minden kell, az hat
  88. lemezt küldjön és tegyen elegendõ bélyeget is a válaszborítékra.
  89. §SL 1 §SPACES 2
  90.   A programozást most úgy kezdjük, hogy leírom itt minden program egyik
  91. legfontosabb részét, a startup rutint. Ez intézi, hogy a Workbench-rõl is
  92. rendesen elinduljanak a programok, ne pedig a GURU jelenjen meg az ikonos
  93. indítás után. (A forrást megtalálod a §I+ NézzMeg! §I- alkönyvtárban!)
  94. §SL 1
  95. A CLI vagy Shell-bõl indított programok A0-ban kapnak egy mutatót a
  96. paraméter string-re, amely egy 10-es értékû byte-al van lezárva. D0-ban a
  97. string hossza található. A paraméterek kiértékelésére viszont ajánlatosabb
  98. a Dos/ReadArgs rutint használni és ezt a két regisztert béken hagyni. Én
  99. itt mindenesetre elmentem õket, hogy megmaradjon a tartalmuk, ha esetleg
  100. késõbb szükség lenne rájuk.
  101. §PG
  102. §FONT 0 §COL 14 §SPACES 2 Start §SPACES 2 MOVEM.L D0/A0,-(SP)
  103. §PG §FONT 1 §COL 15
  104. Az exec.library báziscímének kiolvasása, mivel Exec rutinokat fogunk
  105. használni.
  106. §PG §FONT 0 §COL 14
  107. §SPACES 2 MOVE.L  (4).W,A6
  108. §PG §FONT 1 §COL 15
  109. Megkeressük a mutatót a Task struktúránkra, amely valójában egy Process
  110. struktúra.
  111. §FONT 0 §COL 14
  112. §PG §SPACES 2 SUB.L   A1,A1
  113. §PG §SPACES 2 JSR     (_LVOFindTask,A6)
  114. §PG §SPACES 2 MOVE.L  D0,A5
  115. §PG §FONT 1 §COL 15
  116. Itt nézzük meg, hogy a programunk a CLI-bõl vagy a Workbench-rõl lett-e
  117. indítva. Ha pr_CLI nulla, akkor ikonnal indultunk, másképpen a CLI-bõl.
  118. §FONT 0 §COL 14
  119. §PG §SPACES 2 TST.L   (pr_CLI,A5)
  120. §PG §SPACES 2 BNE     .1
  121. §PG §FONT 1 §COL 15
  122. Várunk, míg megérkezik a WBStartup nevû message a process-ünk port-jára.
  123. §FONT 0 §COL 14
  124. §PG §SPACES 2 LEA     (pr_MsgPort,A5),A0
  125. §PG §SPACES 2 JSR     (_LVOWaitPort,A6)
  126. §PG §FONT 1 §COL 15
  127. Megjött a WBStartup message és eltávolítjuk a port-ról. Ebbõl lehet
  128. megtudni, hogy milyen más ikonok voltak kiválasztva a miénkkel együtt és
  129. ennek a segítségével kaphatjuk meg az ikonok tooltype-jait is.
  130. §FONT 0 §COL 14
  131. §PG §SPACES 2 LEA     (pr_MsgPort,A5),A0
  132. §PG §SPACES 2 JSR     (_LVOGetMsg,A6)
  133. §PG §SPACES 2 MOVE.L  D0,(WBStartupAddress)
  134. §PG §FONT 1 §COL 15
  135. A paraméter regiszterek eredeti tartalmának helyreállítása, hogy a
  136. fõprogramban esetleg ki lehessen értékelni õket.
  137. §FONT 0 §COL 14
  138. §PG §SPACES 2 .1 §SPACES 2  MOVEM.L (SP)+,D0/A0
  139. §PG §FONT 1 §COL 15
  140. Itt hívjuk meg a fõprogramot, amely ha szükséges, akkor a WBStartupAddress
  141. kiolvasásával megtudhatja, hogy CLI-bõl vagy Workbench-rõl indult-e.
  142. §FONT 0 §COL 14
  143. §PG §SPACES 2 BSR     Main
  144. §PG §FONT 1 §COL 15
  145. A CLI-s programok a D0-ás regiszterben szoktak egy hibakódot visszaadni,
  146. amelyet most gyorsan elmentünk. Ez a szám általában 0, 5, 10 vagy 20
  147. szokott lenni, a hiba súlyosságától függõen. A 0 azt jelenti, hogy nem
  148. történt semmi hiba.
  149. §FONT 0 §COL 14
  150. §PG §SPACES 2 MOVEM.L D0,-(SP)
  151. §PG §FONT 1 §COL 15
  152. Megnézzük, hogy a program eredetileg a CLI-bõl vagy a Workbench-rõl lett-e
  153. indítva.
  154. §FONT 0 §COL 14
  155. §PG §SPACES 2 MOVE.L  (WBStartupAddress,PC),D0
  156. §PG §SPACES 2 BEQ     .2
  157. §PG §FONT 1 §COL 15
  158. A multitasking-ot le kell tiltani, mielõtt válaszolunk a WBStartup
  159. message-re, mert ahogy a Workbench megkapja a választ, rögtön
  160. felszabadítja a programunk által foglalt memóriát. Mi ekkor akár felül
  161. is íródhatunk egy másik program által, amely azonnal lefoglalja és
  162. feltölti adatokkal a valaha saját memóriánkat.
  163. §FONT 0 §COL 14
  164. §PG §SPACES 2 JSR     (_LVOForbid,A6)
  165. §PG §FONT 1 §COL 15
  166. A WBStarup message visszaküldése a Workbench-hez. Mindig a program
  167. legvégén kell végrehajtani, természetesen egy Forbid után.
  168. §FONT 0 §COL 14
  169. §PG §SPACES 2 MOVE.L  (WBStartupAddress,PC),A1
  170. §PG §SPACES 2 JSR     (_LVOReplyMsg,A6)
  171. §PG §FONT 1 §COL 15
  172. A CLI-hez küldendõ hibakód visszahozása.
  173. §FONT 0 §COL 14
  174. §PG §SPACES 2 .2 §SPACES 2 MOVEM.L (SP)+,D0
  175. §PG §FONT 1 §COL 15
  176. Sajnos itt vége is van a rutinnak.
  177. §FONT 0 §COL 14
  178. §PG §SPACES 2 RTS
  179. §PG §FONT 1 §COL 15
  180. Itt található a WBStartup message címe, ha a Workbench-rõl indultunk,
  181. amúgy meg nulla.
  182. §FONT 0 §COL 14
  183. §PG §SPACES 2 WBStartupAddress §SPACES 2 DC.L    0
  184. §SL 1 §FONT 1 §COL 15 §SPACES 2
  185.   Ha valaki csodálkozik, hogy egy kicsit érdekesen használom a zárójeleket a
  186. címzésmódoknál, akkor elárulom, hogy ez az új Motorola szintakszis, amelyet
  187. a 68020-as processzorral vezettek be. Ajánlom mindenkinek, hogy ezt
  188. használja az áttekinhetõség és logika kedvéért. Viszont nem ajánlom az
  189. AsmOne vagy valamelyik klónjának a használatát, mert tele vannak hibákkal,
  190. nem ismernek minden utasítást és egy csomó más baj is van velük. Mondjuk
  191. kisebb programok írására még én is használom, de a nagyobbakat a GoldED és a
  192. PhxAss segítségével készítem. A GoldED 3.1.4-es verziója regisztrálva
  193. freeware-ként fent van az Aminet-en a text/edit/ged314r.lha fájlban. Aki nem
  194. ismeri, annak elárulom, hogy ez a legjobban konfigurálható szöveg szerkesztõ
  195. az Amigára. A PhxAss és a hozzátartozó PhxLnk is megtalálhatóak az Aminet-en
  196. a dev/asm directory-ban. A PhxAss csak fordító, tehát nem tartalmaz
  197. szerkesztõt vagy debugger-t, viszont ismeri az összes CPU, FPU és MMU
  198. parancsot, címzésmódot és regisztert, ami az Amigánál található.
  199. Optimalizálni is tud egy csomó féle módon, nem csak olyan bénául, mint az
  200. AsmOne. Tehát ha valaki jogtiszta programokkal szeretne dolgozni, akkor
  201. ezeket tudom neki ajánlani, nálam eddig nagyon jól mûködnek.
  202. §SL 1 §SPACES 2
  203.   Ha van valamilyen speciális kívánságotok, hogy milyen témájú legyen az itt
  204. készülõ program, akkor nyugodtan írjatok vagy nekem vagy az újságnak.
  205. Írjátok meg, hogy az operációs rendszer mely része érdekelne titeket jobban,
  206. mert akkor olyan programot fogok itt leközölni, amelyben az megtalálható. Ha
  207. senki sem ír, akkor egy egyszerûbb kis public screen manager-t fogok írni és
  208. elmagyarázni, amely használni fogja az intuition.library, gadtools.library
  209. és talán a commodities.library rutinjait.
  210. §SL 1 §SPACES 2
  211.   Hát akkor jó programozást kívánok mindenkinek és nyugodtan írjatok, ha
  212. felvetõdik valamilyen kérdés vagy kívánság. Bye.
  213. §SL 1 §RIGHT 
  214. §I+ Zavacki Ferenc §I-